package com.tyf.common.vo;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Map;

/**
 * 
 * @ClassName: ExportRequest<br>
 * @Description: 导出请求封装<br>
 * @author liutao<br>
 * @date 2016年10月22日下午10:21:57<br>
 *
 */

public class ExportRequest {
	/**
	 * 导出列Map
	 * 格式如：[{"field":"appCode","title":"编码"},{"field":"name","title":"名称"}]
	 */
	@Getter @Setter
	List<Map> exportColumns = Lists.newArrayList();
	
	/**
	 * 文件名
	 */
	String fileName;
	
	/**
	 * 文件类型 xls,xlsx
	 */
	String fileType;
	
	/**
	 * 开始页
	 */
	Integer pageNum;
	
	/**
	 * 页大小
	 */
	Integer pageSize;
	
	/**
	 * 结束页
	 */
	Integer pageNumTo;
	
	/**
	 * 导出下拉框VO的Map
	 * 导出的下拉框数据 以filed为key，ComboVO为vlaue的map结构数据
	 */
	@Getter @Setter
	Map<String, ComboVO> exportCombos = Maps.newHashMap();

	/**
	 * 获取导出数据的方法，该方法必须在Service类中声明实现，参数为searchable
	 */
	@Getter @Setter
	String findDataMethod = "findAll";
	
	/**======================导出逻辑用，与前端参数无关===================**/
	/**
	 * 应用真实路径
	 */
	String contextRealPath;
	
	/**
	 * 导出vo类
	 */
	Class<?> voClazz;

	/**
	 * 当前资源编码
	 */
	String resCode;

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public String getFileType() {
		return fileType;
	}

	public void setFileType(String fileType) {
		this.fileType = fileType;
	}

	public Integer getPageNum() {
		return pageNum;
	}

	public void setPageNum(Integer pageNum) {
		this.pageNum = pageNum;
	}

	public Integer getPageSize() {
		return pageSize;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public Integer getPageNumTo() {
		return pageNumTo;
	}

	public void setPageNumTo(Integer pageNumTo) {
		this.pageNumTo = pageNumTo;
	}

	public String getContextRealPath() {
		return contextRealPath;
	}

	public void setContextRealPath(String contextRealPath) {
		this.contextRealPath = contextRealPath;
	}
	
	/**
	 * 重置结束页
	 */
	public void resetPageNumTo() {
		this.pageNumTo =  pageNumTo==null ? 
				((pageSize!=null && pageNum!=null) ? pageNum:null)
				: pageNumTo;
	}

	public Class<?> getVoClazz() {
		return voClazz;
	}

	public void setVoClazz(Class<?> voClazz) {
		this.voClazz = voClazz;
	}

	public String getResCode() {
		return resCode;
	}

	public void setResCode(String resCode) {
		this.resCode = resCode;
	}
}
